#include <stdio.h>
#include "cJSON.h"

int main(int argc, char const *argv[])
{

    // 0、打印cjson的版本
    printf("cJson Version = %s\n", cJSON_Version());

    // 1、设计一个cjson数据
    char json_data[] = "{\"student\":[{\"name\":\"张三\",\"age\":18},{\"name\":\"李四\",\"age\":20}]}";

    // 2、把字符串转换为json数据
    cJSON *json_obj = cJSON_Parse(json_data); 
    if (json_obj == NULL)
    {
       // 获取错误的原因
       const char *err = cJSON_GetErrorPtr();  
       printf("解析cjsn失败:%s\n", err);
    }
    else
    {
        printf("解析json成功\n");
    }

    // 3、获取student对应的数组
    cJSON *array = cJSON_GetObjectItem(json_obj, "student");

    // 4、获取数组的大小
    int size =  cJSON_GetArraySize(array);
    printf("当前数组的大小为:%d\n", size);

    // 5、遍历数组
    int i = 0;
    for ( i = 0; i < size; i++)
    {
        // 6、获取数组中的每一个元素
        cJSON *obj = cJSON_GetArrayItem(array, i);

        // 直接输出对象
        printf("当前对象: %s\n", cJSON_Print(obj));

        // 继续获取每个对象的name和age
        cJSON *name = cJSON_GetObjectItem(obj, "name");
        cJSON *age = cJSON_GetObjectItem(obj, "age");

        char *name_value = cJSON_GetStringValue(name);      // 把cJson对象转换为字符串
        double age_value = cJSON_GetNumberValue(age);       // 把cJson对象转换为数值
        printf("name = %s, age = %0.1f\n", name_value, age_value);

    }
    

    
}